Currently there are a myriad of computer peripherals that can be attached to a computer network or to a computing device to provide input data or to enhance the functionality of the computing device or of computers attached to the computer network. Common examples of such peripherals include: a computer mouse, keyboards, printers, external disk drives, and the like.
Typically creating an environment in which computer peripherals can easily interface with a computer network or a computing device has been a significant challenge. First, each device usually has its own software and hardware interfaces requiring specific device drivers and sometimes special physical connections for each device. For example, enabling the easy connectivity of computer printers, one of the most common computer peripherals, requires that personal computer operating systems now typically come equipped with hundreds of printer device drivers. For more specialized devices manufactured by a host of companies, such a solution is not practical. An alternative approach has been to include device driver material with each peripheral device. This approach has the disadvantage of requiring user intervention to establish proper operation.
A further approach has been to attempt to standardize the operation of classes of computer peripherals so that a single device driver can be used for an entire class of devices. For example with point-of-sale cash registers, many associated peripheral devices have RS232 or RS488 physical interfaces and software interfaces defined according to an IBM standard. Similarly with image scanners, the TWAIN standard has been proposed. This approach also has disadvantages. First, each class of peripheral device still has its own specific hardware and software interfaces. In addition, such standards may not be ideal for all devices within the class. For example, the TWAIN standard was designed for flatbed scanners, and, therefore, simple instructions for hand-held image readers, such as a trigger pull, are not easily supported. Further, these specific interfaces when combined with the corresponding instruction set require significant technical expertise for developers wishing to integrate the use of a particular computer peripheral into an application.
For example, a developer will frequently be required to dedicate significant time to learning a computer peripheral specific application programming interface (API). Commonly these APIs in addition require a developer to be conversant with advanced computer programming languages such as C or C++. Further, once the new operating code has been written, the operating system must be recompiled and distributed to potentially thousands of terminals throughout a network. Also, prior to the distribution of the recompiled code in some systems, such as the operating system Windows® CE, extensions to the operating system must be reviewed, evaluated, certified by Microsoft® WHQL (or another third party) and given tentative approval pending the results of actual implementation. In general, therefore, the specialized technical skills combined with the distribution and approval challenges presented by the integration of new and specialized computer peripherals represents a significant barrier to their adoption by IT professionals and the general public.
What is needed is a system and method to allow a broad range of computer peripherals to be automatically recognized and to function without user intervention when connected to a computer network or a computing device. Further what is needed is a system and method to allow for the easy programming and integration of such computer peripherals.